﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Sofire.Data.XSql
{
    /// <summary>
    /// 表示一个 XSql 内部引起的错误。
    /// </summary>
    public class XSqlException : Exception
    {
        private IXSql _Node;
        /// <summary>
        /// 获取引起错误的节点。这可能是一个 null 值。
        /// </summary>
        public IXSql Node
        {
            get
            {
                return this._Node;
            }
        }

        private XSqlError _Error;
        /// <summary>
        /// 获取错误的类型。
        /// </summary>
        public XSqlError Error
        {
            get
            {
                return this._Error;
            }
        }

        private string _AttributeName;
        /// <summary>
        /// 获取引发异常的属性名称。
        /// </summary>
        public string AttributeName
        {
            get
            {
                return this._AttributeName;
            }
            internal set
            {
                this._AttributeName = value;
            }
        }

        internal XSqlException(IXSql node, XSqlError error, string message)
            : base(message)
        {
            this._Node = node;
            this._Error = error;
        }

        internal XSqlException(IXSql node, XSqlError error)
            : this(node, error, null) { }
    }
}
